A cache is memory used by a processor of a computer to reduce the average time to access data. Cache memory is smaller and faster than main memory. Cache memory stores copies of data from the most frequently used main memory locations. When cache memory is accessed frequently, the average total memory access latency will be closer to the cache memory latency than to the main memory latency. Typically, when a processor needs to read from and/or write to a location in main memory, it first determines if a copy of that data is available in the cache. If so, the processor reads from and/or writes to the cache, which is much faster than reading from and/or writing to main memory. There are typically at least three independent cache types—an instruction cache used to speed up fetching of executable instructions, a data cache used to speed up fetching and storing of data, and a translation lookaside buffer (TLB) used to speed up virtual-to-physical address translation for both executable instructions and data. Many computers use multiple levels of caches (i.e. small fast caches followed by larger slower caches). Multi-level caches typically function by checking the smallest level 1 (L1) cache first. If data is found in the L1 cache, then the data is accessed from this high speed memory. If the L1 cache misses, the next larger cache (L2) is checked. This process continues through the various cache levels, until main memory is checked.